package com.linkai.JUC._03_lock8;

import java.util.concurrent.TimeUnit;

/**
 * @Description:
 *              3. 增加了一个普通方法之后，打印发短信还是hello？   先打印 hello
 *              4. 两个对象，2个同步方法，发短信还是打电话？
 * @Author: 林凯
 * @Date: 2021/10/23 20:49
 */
public class Test02 {
    public static void main(String[] args) throws InterruptedException {

        // 2个对象，2个调用者，两把锁
        Phone02 phone01 = new Phone02();
        Phone02 phone02 = new Phone02();

        new Thread(()->{
            phone01.sendSms();
        }).start();

        TimeUnit.SECONDS.sleep(1);

        new Thread(()->{
            phone02.call();
        }).start();

//        new Thread(()->{
//            phone01.hello();
//        }).start();
    }
}

class Phone02 {
    // synchronize 锁的对象是方法的调用者
    // 2个方法用的是同一把锁，谁先拿到，谁执行
    public synchronized void sendSms() {
        System.out.println("发短信");
    }

    public synchronized void call() {
        System.out.println("打电话");
    }

    // 这里没有锁！不是同步方法，不受锁的影响
    public void hello() {
        System.out.println("hello");
    }
}
